package com.berchen.code.digest;

import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 消息摘要算法 为了防止文件被篡改
 */
public class DigestTese {

    public static void main(String[] args) throws NoSuchAlgorithmException, Base64DecodingException {

        // 算法 MD5 SHA-1 SHA-256 SHA-512
//        String algorithm = "MD5";
        String algorithm = "SHA1";
        // 创建消息摘要对象
        MessageDigest digest = MessageDigest.getInstance(algorithm);
        // 原文
        String input = "aa";

        // 执行消息摘要算法
        byte[] digest1 = digest.digest(input.getBytes());

        // 使用Base64 进行转码 QSS8CpM1wn8IbyS6IHpJEg==
        System.out.println(Base64.encode(digest1));

        // 手动转码 该转码后就和网站上转码的值是一样的 4124bc0a9335c27f086f24ba207a4912
        for (byte b : digest1) {
            // 将密文转成16进制
            String s = Integer.toHexString(b & 0xff);
            // 如果密文长度是1  那么就高位进行补0
            if(s.length()==1){
                s="0"+s;
            }
            System.out.print(s);
        }
    }
}
